#pragma once
#include "Laser.h"
#include "HUD.h"
#include "Gutter.h"
#include "Map.h"
#include "Block.h"
#include "Constants.h"
#include "FallingBlocks.h"

class GameCore {

public:
	GameCore(void);
	~GameCore(void);
	Laser& laser() {
		return *m_Laser;
	}
	HUD& hud() {
		return *m_HUD;
	}
	Gutter& gutter() {
		return *m_Gutter;
	}
	Map& map() {
		return *m_Map;
	}
	Block& block() {
		return *m_Block;
	}
	Score& score() {
		return m_Score;
	}
	GameSettings& settings() {
		return m_Settings;
	}
	SimpleHighscoreService& highscore() {
		return m_Highscore;
	}
private:
	FallingBlocks* m_FallingBlocks;
	Block* m_Block;
	Laser* m_Laser;
	HUD* m_HUD;
	Gutter* m_Gutter;
	Map* m_Map;
	ds::ParticleManager* m_ParticleManager;
	Score m_Score;
	GameSettings m_Settings;
	SimpleHighscoreService m_Highscore;
};

